package main

import "fmt"

func main() {
	// 方式1
	var arr = [3]int{1, 2, 3}
	testArr1(arr) // 值传递，未修改arr
	fmt.Println("值传递: ", arr)
	changeArr(&arr) // 指针传递，直接修改arr
	fmt.Println("指针传递: ", arr)

}

// 数组初始化方式
func arrInit() {
	// 方式1
	var arr1 = [3]int16{1, 2, 3}
	fmt.Println("arr1 -> ", arr1)

	// 方式2, ... 不确定长度
	var arr2 = [...]int{4, 5, 6}
	fmt.Println("arr2 -> ", arr2)

	// 方式3, 使用：各固定的下标直接赋值
	var arr3 = [...]int{2: 22, 3: 33}
	fmt.Println("arr3 -> ", arr3)
}

// 值传递
func testArr1(arr [3]int) {
	arr[0] = 7
}

// 指针传递
func changeArr(arr *[3]int) {
	(*arr)[0] = 10
}
